package com.ljx.thread.pollThread07;

import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @author LJX
 * @Description: TODO
 * @Date: 2022/11/2 16:06
 * @Version 1.0
 */

/**
 *int corePoolSize, 核心线程的个数
 *int maximumPoolSize, 最大线程的个数
 * long keepAliveTime, 线程对象空闲的时间(keepAliveTime 当线程数大于核心时，这是多余的空闲线程在终止之前等待新任务的最长时间。)
 * TimeUnit unit, 空闲时间单位
 * BlockingQueue<Runnable> workQueue：等待队列
 * ThreadFactory threadFactory,threadFactory执行程序时要使用的工厂创建一个新线程
 * RejectedExecutionHandler handler当执行被阻塞时要使用的处理程序因为已达到线程边界和队列容量
 */
public class PollThread02 {
	public static void main(String[] args) {
		ThreadPoolExecutor executeService = new ThreadPoolExecutor(2,5,2000, TimeUnit.SECONDS,new LinkedBlockingDeque<>(3));
		// 往线程中提交任务
		for (int i = 0; i < 9; i++) {
			final int a=i;
			executeService.submit(new Runnable() {
				@Override
				public void run() {
					System.out.println(Thread.currentThread().getName()+"~~~~~~"+a);
				}
			});
		}
		executeService.shutdown();
	}
}
